{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import commpy as cp\n",
    "from commpy.channelcoding import convcode, Trellis\n",
    "from deepcom.utils import corrupt_signal\n",
    "from deepcom.dataset import generate_message_bits\n",
    "\n",
    "# For visualization\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.gridspec as gridspec"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "BLOCK_LEN = 100\n",
    "SNR_MIN   = -10\n",
    "SNR_MAX   = 10\n",
    "SNR       = SNR_MAX  # desired SNR used to determine noise power\n",
    "Eb_No     = 10**(SNR/10.0) # convert SNR to decimal\n",
    "No        = 1.0/Eb_No # Linear power of the noise; average signal power = 1 (0dB)\n",
    "\n",
    "trellis = Trellis(memory   = np.array([2]), \n",
    "                  g_matrix = np.array([[0o7, 0o5]]) , \n",
    "                  feedback = 0o7, \n",
    "                  code_type= 'rsc')\n",
    "QPSKModem = cp.modulation.PSKModem(m=32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Helper function to visualize complex signals\n",
    "def visualize(signals, axScatter, axHistx, axHisty, title):\n",
    "    \n",
    "    # Scatter Plot\n",
    "    axScatter.scatter(np.real(signals), np.imag(signals))\n",
    "    axScatter.axhline(0, color='black')\n",
    "    axScatter.axvline(0, color='black')\n",
    "    \n",
    "    axScatter.set_xlabel(title)\n",
    "    # no axis labels for box plots\n",
    "    axHistx.xaxis.set_visible(False)\n",
    "    axHisty.yaxis.set_visible(False)\n",
    "    binwidth = 0.25 # width of histrogram 'bins'\n",
    "    xymax = np.max([np.max(np.fabs(np.real(signals))), \n",
    "                    np.max(np.fabs(np.imag(signals)))] ) # find abs max symbol value; nominally 1 \n",
    "    lim = (int(xymax/binwidth) + 1) * binwidth # create limit that is one 'binwidth' greater than 'xymax'\n",
    "    \n",
    "    # set the data limits for the axes\n",
    "    axScatter.set_xlim((-lim, lim)) \n",
    "    axScatter.set_ylim((-lim, lim))\n",
    "    \n",
    "    # create bins 'binwidth' apart between -lin and +lim -- autoscale\n",
    "    bins = np.arange(-lim, lim + binwidth, binwidth) \n",
    "\n",
    "    # Histogram Plot\n",
    "    axHistx.hist(np.real(signals), bins=bins) \n",
    "    \n",
    "    # plot a histogram - yaxis are imaginary values\n",
    "    axHisty.hist(np.imag(signals), bins=bins, orientation='horizontal')\n",
    "    axHistx.set_xlim(axScatter.get_xlim())\n",
    "    axHisty.set_ylim(axScatter.get_ylim())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Define a Radio [Msg bits --> Encoder --> Mod --> AWGN Channel --> Demod --> Decoder]\n",
    "\n",
    "* NOTES: No equalization in this example\n",
    "\n",
    "### Visualize Modulated Singals and Corrupted Signals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def Encoder(msg_bits):\n",
    "    return convcode.conv_encode(msg_bits, trellis)\n",
    "\n",
    "def Modulator(inputs):\n",
    "    return QPSKModem.modulate(inputs)\n",
    "\n",
    "def AWGNChannel(inputs):\n",
    "    # TODO: How to corrupt complex numbers ?\n",
    "    return cp.channels.awgn(inputs, snr_dB=SNR, rate=1)\n",
    "\n",
    "def Demodulator(inputs):\n",
    "    return QPSKModem.demodulate(inputs)\n",
    "\n",
    "def Decoder(inputs):\n",
    "    # TODO:\n",
    "    pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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gZmoe7Rj2jARERERERFRLAxeiYiIiIiIKPUYvBIREREREVHqMXglIiIiIiKi1GPwSkRERERERKnH4JWIiIiIiIhSj8ErERERERERpR6DVyIiIiIiIko9Bq9ERERERESUegxeiYiIiIiIKPUYvBIREREREVHqMXglIiIiIiKi1GPwSkRERERERKnH4JWIiIiIiIhSj8ErERERERERpR6DVyIiIiIiIko9Bq9ERERERESUegxeiYiIiIiIKPUYvBIREREREVHqMXglIiIiIiKi1GPwSkRERERERKnH4JWIiIiIiIhSj8ErERERERERpR6DVyIiIiIiIko9Bq9ERERERESUegxeiYiIiIiIKPUYvBIREREREVHqMXglIiIiIiKi1GPwSkRERERERKnH4JWIiIiIiIhSj8ErERERERERpR6DVyIiooQMDQ1h+fLl+MAHPoA77rgDExMT2u1E5OMickxEnhOR4TYPk4iIqCsxeCUiIkrIxz72Mfz85z/Hs88+i9/6rd/Cli1bGrYRkSyAvwLwCQDvA/AZEXlfm4dKRETUdRi8EhERJeTmm29GT08PAOCmm27CK6+8otvsQwCeU0q9oJS6COC7AG5v3yiJiIi6E4NXIiKiFvjbv/1bfOITn9B9qwDghOfrV6qPERERUQBRSnV6DFoicgrAy50eR9UVAH7T6UGkEI9LIx4TPR4XvbQcl2uUUgub/WER+RcAxxIcT1JadXx/C4CjebwIwF3k+i4A8wA879vmGgD/G4CPK6W+AAAi8j8BuFEp9WX/DkXkiwC+WP3y/QB+Hnv07ZOW89tGN40V6K7xdtNYge4abzeNFeiu8S5TSr2t2R9O8ediGvjPg0jXID3JjycZcS6kkiYiB5RSqzo9jrThcWnEY6LH46I3g47LsTS+jk4dXxH5AwBfAvARpdQ5zfd/B8Aiz0NXoxL4NlBKPQjgwerPddX50k3j7aaxAt013m4aK9Bd4+2msQLdNV4RORBzF6n8XEyDuOcBpw0TERElREQ+DuDfArhNF7hW/QzAe0VkqYjMAfBpADvbNUYiIqJuxeCViIgoOX8J4G0Afiwi4yLynwFARK4SkScBQCk1CeDLAHYD+CWA7UqpI50aMBERUbdI7bThlHmw0wNIKR6XRjwmejwuejPluKT1dbR9XEqp9xgePwngFs/XTwJ4MuLu03qcTbppvN00VqC7xttNYwW6a7zdNFagu8Ybd6zd9FrbLdaxSW3BJiIiIiIiIiIXpw0TERERERFR6jF41RCRT4nIERGZFhFjNSwR+biIHBOR50RkuJ1j7AQRWSAiPxaRX1X/32fYbqq61mtcRGZkEZKw915E5orItur3nxGRJe0fZftZHJc/EJFTnvPjC50YZzuJyN+KyK9FRNviRCr+r+oxe1ZEfrvdY2xWJ/8GisgiEdkrIr+o/r3+k+rjm0Wk6DnHbvH8zFeqYz0mIuvaOd5miMhWETlaPS++JyJ5w3ap+CyK8Nn5kogcrr4/cSt6NqXbPue74fO32z4Xu+nzqps+RyzG+mEROeM5rl9r9xg9Y9F+jvi2iXRs0/I3o1MCPpu1f8OaOneVUvzP9x+A6wAsA/A0gFWGbbKo9O+7FsAcAIcAvK/TY2/xcfn3AIar/x4G8C3Ddm91eqwtPg6h7z2A/x3Af67++9MAtnV63Ck5Ln8A4C87PdY2H5d/DeC3Afzc8P1bAPw3AALgJgDPdHrMSb3fLX7+KwH8dvXfbwPw/wF4H4DNAP4Pzfbvq45xLoCl1bFnO30cQ17jzQB6qv/+lu5vbqffB99YQj87q9u9BOCKDh/brvqcT/vnb7d9Lnbb51U3fY5YjPXDAP6+08e0Ohbt50izxzZNfzPSdkxNf8OaOXeZedVQSv1SKRXWWPhDAJ5TSr2glLoI4LsAbm/96DrqdgAPVf/9EIDBDo6lk2zee++xehzAR0RE2jjGTpiNvxOhlFL/HcDpgE1uB/BfVcV+AHkRubI9o4ulo++3UupVpdQ/Vf/9L6hU7S0E/MjtAL6rlLqglHoRwHOovIbUUkr9SFUqEwPAflT6wfql5vfO8rMzFbrwcz7tn7/d9rmYpvc2VDd9jliMNTUsP0eiHNuuOq9aIeCYmv6GRT53Gbw2rwDghOfrVxB84TQTvFMp9Wr1368BeKdhu8tE5ICI7BeRtH3AJsHmva9tU734PAPg7W0ZXefY/k7cWZ0a8riILGrP0FKtW/+WpGbc1emHAwCeqT705eo59ree6ZWpGW+T/hdU7k77dePrUgB+JCIHReSLnR5MgDQd27R//nbb5+JM+7xK07lq43dE5JCI/DcRWdHpwQDazxFXlGPbbe9DS/mOqelvWORjNmtb5YjIUwDepfnWnymlvt/u8aRF0HHxfqGUUiJiKlV9jVKqKCLXAtgjIoeVUs8nPVbqSj8A8KhS6oKIfAmVu29rOzwm6mIicjmAHQDuVkr9s4j8JwB/jkqA9OcAvo1K4JdKNp9FIvJnACYBPNLOsekk9Nn5e9XPiHeg0g/3aDVbk6hu+5zn52/q8POqNf4JlfP0LanUJBgF8N5ODsj/OdLJscwUms/m2vdC/oaFmrXBq1LqozF3UQTgvQt3dfWxrhZ0XETkdRG5Uin1ajWl/2vDPorV/78gIk+jctdlJn142rz37javiEgPgPkA3mjP8Dom9LgopbzH4DuorIGY7br1b0nHxy0iDiofjo8opZ4AAKXU657v/xcAf1/9suPj1Qn7LBKRPwDwbwB8RFUXCPm09XUl8Nnp/Yz4tYh8D5WpdokHr932Od/ln7/d9rk40z6vUvn3TccbHCqlnhSR/ygiVyilftOJ8eg+R3yiHNuueR9ayXBMTX/DIh8zThtu3s8AvFdElorIHFSKD8zIyroeOwF8vvrvzwNouHMtIn0iMrf67ysArAbwi7aNsD1s3nvvsfokgD2GC8+ZJPS4+NYx3IbKWojZbieA/7lace8mAGc8U2vSrKN/A6tr5f4GwC+VUn/hedx7jt0BwK14uRPAp6VS8XQpKnf6f9qu8TZDRD4O4N8CuE0pdc6wWVd9FonIPBF5m/tvVIpSaauSpkCajm3aP3+77XNxpn1edc3niIi8y13rLCIfQiUW6chNDNPniE+UY5umvxkdEXBMTX/Dop+7KgWVqdL2HyoXPK8AuADgdQC7q49fBeBJz3a3oFJF63lUpiF1fOwtPi5vB/APAH4F4CkAC6qPrwLwneq/fxfAYVQqrB0G8IedHneLjkXDew/g66hcZALAZfp8lPgAAAj+SURBVAAeQ6UozE8BXNvpMafkuGwBcKR6fuwFsLzTY27DMXkUwKsAytW/K38I4I8A/FH1+wLgr6rH7DACqrSm7b9O/g0E8HuoTA1+FsB49b9bAPw/1eP4bPVD8UrPz/xZdazHAHyi08fP4jU+h8paIPf1uZVaU/lZZPPZiUoVzkPV/450arzd9jnfDZ+/3fa52E2fV930OWIx1i97jut+AL/bwbGaPkeaPrZp+ZuRwmNq+hsW+dyV6g8SERERERERpRanDRMREREREVHqMXglIiIiIiKi1GPwSkRERERERKnH4JWIiIiIiIhSj8ErERERERERpR6DV0otEVEi8rDn6x75/9u791iv6zqO48+XYkDipUydqelsVgoCcbFZVppZmbQySTRm0WVqa87cmHkpE1u1sjZFp6QNUctbqWmGl6apWCqIwEE0cqkolqTlXWAKr/74fH7w88fvHM5R8/zQ12Nj/M7n+/l+Lr+zs/f3c/l+v9ITkq7tYzkP13fe9ZRnhqTx68kzSdK7+1j3zpLWeYehpI0kTZV0r6SFkubUd08iaaakLftSz6ttR0REbHjquzIvlfQPSXNr3HjfG9yGkZI++yrOu0XSmDbp4yTNk7RA0n2SjqzpR0n6yuvR5t60IyI624D+bkBED14AhkkabHs5sD/wWD+2ZxJwL/DP16GsCZT3CQ63vVrSDpT+YrvPFwMREfHWIEnAVcAFtg+taSOAbSnvl1zf+QNsv9xSnmyv7mNTRlLeMzuzj+e1a9MmwLnAnraXShoI7Axge9prLT8i3jyy8hqdbiZwYP18GOXl1wBIeqek30vqknSnpOE1fStJN0paJOlXlBcgr7P6KGmypFNaK5R0cl0JvVfSuSrGU4L0byTNlzRY0mhJt9ZZ7xskbVfPH11njhcA3+6mX9sB/2pcLNheavupev6alWJJ35e0WNLtki6RNLmm3yLpp5JmS/q7pI829XGWpHvqvw+36d/Qet78+t3t2ttfRkRE9Lt9gZeaB3W2F9ieVePVaU27eiYASNqnxoZrgPtqrFgs6ULKpOyOkp5vlCdpvKQZ9fMMSdMk3V3jzThJbwNOBSbUWDJB0qaSptf4Mk/S5+v5g+sq8f2SrgIGt+nTZpQFlf/U/qy0vbief0pT7Btb49b8Rj9r+iRJV0q6XtIDkn7W1JdzatsXSZrSWrGkjWsfG9/Zsa/6NxMR/3cZvEanuxQ4VNIgYDhwV9OxKcA828OBE4ELa/oPgNttD6XMTr+nj3WeZXus7WGUIDvO9u+Au4GJtkcCLwNnAuNtjwamAz+q558PHG17RA91XA58rgbgX0j6YGsGSWOBg4ERwAGUwXOzAbb3BL5T+wzwb2B/26Moq7tT29R9FHBG7ccYYGlPX0ZERHSUYcDcbo59kbIiOgL4JHBaY2IVGAUcY7uxvXhX4GzbQ20vWU+dOwN7UiaTp1GuH08GLrM90vZlwEnAzTUu7Vvr3hT4FvCi7d0osWp0a+G2/wtcAyypE7UTJbW7Rj0fOLLGr1Utx0ZS4t4elEH1jjX9JNtjKNcQH29MdLect73tYbb3qHVERIfK4DU6mu0uStA8jHW3Ju0NXFTz3QxsJWlz4GPAr2v6H4Gn+ljtvpLukrQQ+AQwtE2e91MuIP4kaT7wPWAHlXtVt7R9W813UTf9WlrLOAFYDdwkab+WbB8Brra9wvZzwB9ajl9Z/59L3V4FbAKcV9v+W2D3NtXfAZwo6bvATnVLdkREbPj2Bi6xvcr2MuBWYGw9Ntv2Q015l9i+s5flXm57te0HgAeBD7TJ8yng+BoTbwEGUSaPm2NyF9DVrgLb3wT2A2YDkymTwmvU+LqZ7Ttq0sUtRdxk+xnbK4D7gJ1q+iGS7gHmUeJ5a1x8ENhF0pmSPgM82+23EBH9Lve8xobgGuDnwD7AVq+hnJd55YTNoNYMdYX3bGCM7UfrtuJ18lG2Ii+yvVfL+b1+0JLtlcB1wHWSlgFfAG7q7fnAyvr/Ktb+LR8LLKPMum8ErGhT78WS7qLMoM+UdGQd/EdEROdbBPT4gMFuvLCen930uTXueT0/Q4mLBze2+65JlHrdQNsLgYWSLgIeojxrordWNn1eBQxQeRDiZGCs7afqVuhX9K2mjwA+TdmZdAjw9T7UGxFvoKy8xoZgOjClBrVms4CJUO7nAZ60/SxwG/Dlmn4A8I6afxmwjco9sQOBcW3qagS1JyUN4ZUXCM9R7ssBWAxsLWmvWs8mkobafhp4WtLeNd/Edh2SNEr1ycV1a9RwoHXb1l8oW4sH1ba0a2+rLVh7L+3hwMZt6t4FeND2VODqWndERGwYbgYGSjqikSBpeH32wSzKltmNJW1NWfWc3ctyl0narcakg1qOfUnlKfnvBXahxMDmmAhwA3C06mi16XaY5pg8jDYxR9KQGscbRtISE2t8fU7Sh2rSob3o0+aUQfozkral3ILTWve7gI1sX0HZRTWqF+VGRD/Jymt0vLrFtt29m6cA0yV1AS8CX63pU4BLJC0C/go8Ust5SdKplED+GPC3NnU9Lek8ygMsHgfmNB2eAUyTtBzYizKwnSppC8rf0umUGfGv1XYZuLGbbm1D2d47sP48GzirpS1z6sM1uigD74XAM92U13A2cIXKawWuZ92ZdSizyodLeqn28cfrKTMiIjqEbUs6CDi93v6xAniY8vyD2ynxaQFldfQ4249LarfNt9XxwLXAE5RnPAxpOvYIJU5tDhxle4WkP7N2m/BPgB9S4mBXHQA/RJl0PQc4X9L9wP20v19XwHGSfgksp8SuSW3yfYMSO1dTtkT3GBNtL5A0jxLvH6VMCrfavravsaBzQk9lRkT/kt1u50dEdAJJQ2w/L+ntlNnrI2zf09/tioiIt4a61fba+uDC/m7LENvP18/HA9vZPqafmxURb6CsvEZ0tnMl7U7ZznxBBq4REfEWdqCkEyjXr0vo2z2xEfEmkJXXiIiIiIiI6Hh5YFNERERERER0vAxeIyIiIiIiouNl8BoREREREREdL4PXiIiIiIiI6HgZvEZERERERETHy+A1IiIiIiIiOt7/AMmcTtl5lV+IAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1152x720 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "N = 1000\n",
    "moded_signals = []\n",
    "corruped_signals = []\n",
    "\n",
    "# #######################\n",
    "# Generate examples\n",
    "# ######################3\n",
    "for i in range(N):\n",
    "    msg_bits = generate_message_bits(5)\n",
    "    \n",
    "    encoded  = Encoder(msg_bits)\n",
    "    moded    = Modulator(encoded)\n",
    "    corruped = AWGNChannel(moded) \n",
    "     \n",
    "    moded_signals.append(moded)\n",
    "    corruped_signals.append(corruped)\n",
    "# #######################\n",
    "# Plot the result\n",
    "# ######################3    \n",
    "fig = plt.figure(figsize=(16, 10))\n",
    "gs = gridspec.GridSpec(4, 10)\n",
    "\n",
    "axHistx = fig.add_subplot(gs[0:1,0: 4])\n",
    "axHistx1 = fig.add_subplot(gs[0:1,5: 9])\n",
    "\n",
    "axScatter = fig.add_subplot(gs[1:,0:4])\n",
    "axHisty = fig.add_subplot(gs[1:,4:5])\n",
    "axScatter1 = fig.add_subplot(gs[1:,5:9])\n",
    "axHisty1 = fig.add_subplot(gs[1:,9:10])\n",
    "\n",
    "visualize(moded_signals, axScatter, axHistx, axHisty, 'Modulated Signals')\n",
    "visualize(corruped_signals, axScatter1, axHistx1, axHisty1, 'Corrupted Signals')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
